using System.ComponentModel.DataAnnotations;
using FytSoa.Domain.Sys;
using Mapster;

namespace FytSoa.Application.Sys.Dto;

/// <summary>
/// 用户账号 DTO，用于创建与修改。
/// </summary>
[AdaptTo(typeof(SysUserAccount), IgnoreAttributes = new[] { typeof(RequiredAttribute) })]
public class SysUserAccountDto
{
    /// <summary>
    /// 主键：用户ID（修改时必填）。
    /// </summary>
    public long Id { get; set; } = 0;

    /// <summary>
    /// 租户ID。
    /// </summary>
    [Required]
    public long TenantId { get; set; } = 0;

    /// <summary>
    /// 登录名，仅创建时允许提供。
    /// </summary>
    [Required]
    public string UserName { get; set; } = string.Empty;

    /// <summary>
    /// 显示名。
    /// </summary>
    [Required]
    public string DisplayName { get; set; } = string.Empty;

    /// <summary>
    /// 邮箱，可空。
    /// </summary>
    [EmailAddress]
    public string? Email { get; set; }

    /// <summary>
    /// 手机，可空。
    /// </summary>
    public string? Phone { get; set; }

    /// <summary>
    /// 初始密码或更新密码，可空。
    /// </summary>
    public string? Password { get; set; }

    /// <summary>
    /// 是否启用。
    /// </summary>
    public bool IsActive { get; set; } = true;

    /// <summary>
    /// 是否锁定。
    /// </summary>
    public bool IsLocked { get; set; } = false;

    /// <summary>
    /// 是否要求下次登录改密。
    /// </summary>
    public bool MustChangePassword { get; set; } = false;
}